A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices, referred to as routers, maintain tables of routing information that describe routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming data packet, the router examines destination information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing table.
Conventional routers have been implemented according to a variety of architectures. In one architecture, for example, the router includes a routing engine and a packet forwarding engine. The routing engine maintains routing information representative of a network topology and, based on the routing information, generates forwarding information that associates network destinations with specific interface ports on the router. The routing engine communicates the forwarding information to the packet forwarding engine, which forwards packets between inbound and outbound interfaces in accordance with the forwarding information.
The packet forwarding engine may perform additional functions, including, for example, filtering, sampling, policing, and rate limiting in connection with performing packet forwarding. In some architectures, hardware components for performing these and other functions are implemented using integrated circuits, such as application specific integrated circuits (ASICs), distributed across multiple modules. These modules may include, for example, a system control module, an interface card concentrator, and multiple interface cards directly connected to the interface card concentrator. Distributing the ASICs provides some flexibility by allowing a user to purchase only the components that are needed. In addition, if a component, e.g., one of the ASICs, fails, the router can be serviced relatively inexpensively by replacing only the malfunctioning module.
While the multiple module architecture offers certain advantages in flexibility and serviceability, it also has drawbacks. For example, the system cost of the router can be high. Reducing the number of hardware components used to implement the router would reduce the cost of manufacturing the router, and improve the overall reliability of the router. Furthermore, reducing or eliminating the need for communication between different hardware modules and delays associated with such inter-module communication would streamline operation of the router.
Many conventional routing components are “pin limited” in that the size of the routing chip limits the number of pins that can be used to communicate with external components and, as a result, limits the performance of the router. In addition, most of the pins are typically used to communicate data between the routing component and external memory devices, leaving a relatively small number of pins for communicating with other external components.